import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class Test {
    public static void main(String[] args) {
        //遍历
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
        arrayList.add(5);
        //1、直接使用sout输出
        System.out.println(arrayList);
        //2、使用for循环进行输出
        int size = arrayList.size();
        for (int i = 0; i < size; i++) {
            System.out.print(arrayList.get(i) + " ");
        }
        System.out.println("");
        //3、for-each循环
        for (Integer x : arrayList) {
            System.out.print(x + " ");
        }
        System.out.println("");
        //4、使用迭代器进行遍历
        Iterator<Integer> it = arrayList.iterator();
        while(it.hasNext()) {
            System.out.print(it.next() + " ");
        }
        System.out.println("");
        System.out.println("==================");
        ListIterator<Integer> it2 = arrayList.listIterator();
        while(it2.hasNext()) {
            System.out.print(it2.next() + " ");
        }
        System.out.println("");
        System.out.println("=========拓展方法======");
        ListIterator<Integer> it3 = arrayList.listIterator(arrayList.size());
        while(it3.hasPrevious()) {
            System.out.print(it3.previous() + " ");
        }
        System.out.println("");
    }
    public static void main4(String[] args) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
        arrayList.add(5);
        System.out.println(arrayList);
        List<Integer> list = arrayList.subList(1,3);//从[1,3)下标进行截取，返回List<>
        System.out.println(list);
    }
    public static void main3(String[] args) {
        //ArrayList常见的操作
        ArrayList<Integer> list = new ArrayList<>();
        list.add(9999);
        list.add(8888);
        list.add(7777);

        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
        arrayList.add(2,999);

        arrayList.addAll(list);

        arrayList.remove(1);//删除1下标的元素
        //我们要是想删除999这个数据的话，不用下标怎么操作：
        arrayList.remove(new Integer(999));
        System.out.println(arrayList);
    }
    public static void main2(String[] args) {
        //ArrayList的构造方法:
        //1、无参构造：
        //创建一个空的顺序表
        ArrayList<Integer> arrayList = new ArrayList<>();

        //2、有参数的构造方法：
        //构造一个参数为10的构造方法：
        ArrayList<Integer> arrayList1 = new ArrayList<>(10);
        arrayList1.add(1);
        arrayList1.add(2);
        arrayList1.add(3);
        arrayList1.add(4);
        //3、利用其他的顺序表来创建：
        ArrayList<Integer> arrayList2 = new ArrayList<>(arrayList1);
        arrayList2.add(999);
        System.out.println(arrayList2);
    }
    public static void main1(String[] args) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);

        System.out.println(arrayList);
    }
}
